#ifndef RBN_GENOME_NODE_H
#define RBN_GENOME_NODE_H

#include "../../rbn/RbnNode.h"

using RBN::RbnNode;

namespace GA {

/* RBN genome node */
class RbnGenomeNode {
public:
	/* new random */
	static RbnGenomeNode* newRandom(int nTotalInputs, int k);

	/* dtor */
	~RbnGenomeNode();

	/* copy */
	RbnGenomeNode* copy() const;

	/* mutate */
	void mutate(int nNodes);

	/* new rbn node */
	RbnNode* getNewRbnNode() const;

private:
	int  _k;        /* k        */
	int* _inputs;   /* inputs   */
	int* _function; /* function */

	/* ctors */
	RbnGenomeNode(int k, int* inputs, int* function);
	RbnGenomeNode(const RbnGenomeNode& node);
};

} // GA

#endif // RBN_GENOME_NODE_H

